1. Field of the Invention
This invention relates generally to computer table data structures and small footprint devices. More particularly, the invention relates to parsing and laying out a table for display, e.g., parsing and laying out an HTML table for display in a web browser running on a small footprint device.
2. Description of the Related Art
The field of xe2x80x9csmartxe2x80x9d small footprint devices is growing and changing rapidly. Small footprint devices include handheld computers, personal data assistants (PDAs), cellular phones, global positioning system (GPS) receivers, game consoles, and many more such devices. These devices are becoming more intelligent and interconnected. Technologies such as Jini(trademark) from Sun Microsystems, Inc. and initiatives such as the Open Service Gateway Initiative (OSGI) are expanding the traditional concepts of computer networks to include small footprint devices.
This increased device interconnection has introduced a need for both new types of computing services and new ways to integrate computing services, both inter-device-based and intra-device-based services. A xe2x80x9cservicexe2x80x9d is an entity implemented within or accessible from a device that can be used by a person, an application, or another service. The concept of a service is broad and can be considered at many different scales. For example, services include familiar network-based services such as shared printing, email, telephony, etc. Services also include less familiar examples such as an energy management service which may control the power consumption of devices within a local network, a diagnostic service which allows a device to send information to a service technician when an error occurs, a health-monitoring service which immediately notifies health professionals of an emergency, etc.
Services also include modules or applications located and executable within a local machine or device. For example, local application programs may utilize a service to communicate with an HTTP server, an HTML render engine service, a bookmark service, a user interface service, etc. In this example, an application program may use these services together to implement a web browser program.
It is becoming more common today to execute multiple services and applications together in a single small footprint device. However, since memory, processing power, and other resources are typically very limited in small footprint devices, a specialized lightweight service/application containment framework is necessary to achieve the desired integration of services and applications. It is also desirable that the containment framework be flexible and extendable enough to provide a framework for any types of services and applications for any kind of small footprint device. A further goal may be that the containment framework be compatible and integrated with off-device services such as services available to devices in a Jini(trademark) network. The containment framework described herein achieves the above-stated goals.
The lightweight containment framework may enable small footprint devices such as personal data assistants, smart cellular phones, etc. to run the types of multi-purpose application programs traditionally associated with desktop computing environments. For example, the Personal Applications suite available from Sun Microsystems, Inc. is built around one embodiment of the containment framework. The Personal Applications suite comprises an integrated set of compact, memory-efficient applications, including the Personal Applications Browser, the Personal Applications Email Client, and the Personal Organizer.
Since small footprint devices may have very strong resource constraints, it is important that not only the application and service framework be lightweight, but also that the applications and services themselves be as compact and efficient as possible. Tables are commonly used in many types of application programs. For example, web browsers display HTML tables, word processors display tables in documents, etc. A table may comprise rows and columns, where the rows and columns define cells, and each of the cells may comprise some kind of cell content. The present invention addresses the problem of laying out table data structures for display.
An efficient method is described for laying out a table for display. The method may be used to display tables on a small footprint device, such as a smart cellular phone, a personal data assistant, a handheld computer, etc. Small footprint devices typically have smaller displays than other computing systems such as desktop computers. The method described herein may perform certain optimizations for small footprint devices. For example, when calculating cell widths, a preferred width specified by the table author may be ignored, and a smaller width for the table may be used in order to conserve display space. In one embodiment the method may be employed to lay out HTML tables or tables described by other markup languages, such as XML-derived markup languages, in a web browser running on a small footprint device. A containment framework supporting applications and services running on a small footprint device is described herein.
Some types of tables, such as HTML tables, may be nested; i.e., table cells may comprise other tables. Many prior art table layout methods scaled exponentially with increasing table nesting complexity. The method described herein is optimized to speed up the layout of nested tables. This increase in efficiency is particularly important for small footprint devices which may have little processing power.